<?php

namespace App\Store\Services\Order;

use App\Store\Models\Basic\PaytypeList;
use Illuminate\Http\Request;
use App\Store\Models\Order\OrderRecharge as OrderRechargeModel;

class OrderRecharge
{


    public static function getOrderPrintData($orderid)
    {
        $withinfo = [
            'memberinfo',
            'shoppingaccountinfo1',
            'shoppingaccountinfo2',
            'storeinfo',
        ];
        $info = OrderRechargeModel::with($withinfo)
            ->where(['id' => $orderid, 'is_del' => 1])->first();

        if ($info) {
            $info = $info->toArray();
            if ($info['pay_type_id'] == -1) {
                $paytype_name = '';
//                {"paytype_16":140000,"paytype_9":5600,"paytype_7":200000}
                foreach ($info['mixed_payment'] as $k => $va) {
                    $paytype_id = substr($k, 8);
                    $va = $va / 100;
                    $paytype_name .= PaytypeList::where('id', '=', $paytype_id)->value('paytype_name') . ":" . $va . ' ';
                };
            } else {
                $paytype_name = $info['pay_type_name'] ?? '';
            }
            $allinfo = [
                'mem_real_name' => $info['memberinfo'] ? $info['memberinfo']['real_name'] : '',
                'mem_mobile' => $info['memberinfo'] ? $info['memberinfo']['mobile'] : '',
                'order_sn' => $info['order_sn'],
                'date' => date('Y-m-d H:i:s', $info['order_at']),
                'paytype_name' => $paytype_name,
                'real_money' => $info['money'] / 100,
                'shop_account' => $info['shoppingaccountinfo1']['real_name'],
                'pay_money' => $info['money'] / 100,
                'capital_pay_money' => self::num_to_rmb($info['money'] / 100),
                'contact_phone' => $info['storeinfo']['contact_phone'] ?? '',
                'assistant_shop_account' => $info['shoppingaccountinfo2'] ? $info['shoppingaccountinfo2']['real_name'] : '',
                'store_name' => $info['storeinfo']['store_name'],
                'order_type' => '充值开单',
                'remark' => $info['remark'],
            ];
            return ['info' => $allinfo];
        } else {
            return [];
        }


    }

    public static function num_to_rmb($num)
    {

        $c1 = "零壹贰叁肆伍陆柒捌玖";

        $c2 = "分角元拾佰仟万拾佰仟亿";

        //精确到分后面就不要了，所以只留两个小数位

        $num = round($num, 2);

        //将数字转化为整数

        $num = $num * 100;

        if (strlen($num) > 10) {

            return "金额太大，请检查";

        }

        $i = 0;

        $c = "";

        while (1) {

            if ($i == 0) {

                //获取最后一位数字

                $n = substr($num, strlen($num) - 1, 1);

            } else {

                $n = $num % 10;

            }

            //每次将最后一位数字转化为中文

            $p1 = substr($c1, 3 * $n, 3);

            $p2 = substr($c2, 3 * $i, 3);

            if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {

                $c = $p1 . $p2 . $c;

            } else {

                $c = $p1 . $c;

            }

            $i = $i + 1;

            //去掉数字最后一位了

            $num = $num / 10;

            $num = (int)$num;

            //结束循环

            if ($num == 0) {

                break;

            }

        }

        $j = 0;

        $slen = strlen($c);

        while ($j < $slen) {

            //utf8一个汉字相当3个字符

            $m = substr($c, $j, 6);

            //处理数字中很多0的情况,每次循环去掉一个汉字“零”

            if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {

                $left = substr($c, 0, $j);

                $right = substr($c, $j + 3);

                $c = $left . $right;

                $j = $j - 3;

                $slen = $slen - 3;

            }

            $j = $j + 3;

        }

        //这个是为了去掉类似23.0中最后一个“零”字

        if (substr($c, strlen($c) - 3, 3) == '零') {

            $c = substr($c, 0, strlen($c) - 3);

        }

        //将处理的汉字加上“整”

        if (empty($c)) {

            return "零元整";

        } else {

            return $c . "整";

        }

    }
}
